package com.yida.gwj.deposit.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.common.core.annotation.Excel;
import com.yida.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 业务维修资金分户业务金额信息（缴存业务管理模块）对象 gwj_deposit_business_money
 *
 * @author lqq
 * @date 2023-01-10
 */
@ApiModel("业务金额对象")
public class GwjDepositBusinessMoney extends BaseEntity {
    private static final long serialVersionUID = 1L;

	/**
	 * 业务金额ID
	 */
	private Long bizMoneyId;

    /**
     * 业务ID
     */
    @Excel(name = "业务ID")
    @ApiModelProperty("业务ID")
    private Long bizId;

	/**
	 * docid
	 */
	private Long docid;

    /**
     * 涉及总金额
     */
    @Excel(name = "涉及总金额")
    @ApiModelProperty("涉及总金额")
    private BigDecimal totalMoney;

    /**
     * 实际金额
     */
    @Excel(name = "实际金额")
    @ApiModelProperty("实际金额")
    private BigDecimal factMoney;

    /**
     * 涉及总面积
     */
    @Excel(name = "涉及总面积")
    @ApiModelProperty("涉及总面积")
    private BigDecimal totalSize;

    /**
     * 实际面积
     */
    @Excel(name = "实际面积")
    @ApiModelProperty("实际面积")
    private BigDecimal factSize;

    /**
     * 涉及总户数
     */
    @Excel(name = "涉及总户数")
    @ApiModelProperty("涉及总户数")
    private Long totalOwner;

    /**
     * 利息金额
     */
    @Excel(name = "利息金额")
    @ApiModelProperty("利息金额")
    private BigDecimal interestMoney;

    /**
     * 缴存日期
     */
    @Excel(name = "缴款日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("缴款日期")
    private Date depositTime;

    /**
     * 账目类型：0收入，1支出
     */
    @Excel(name = "账目类型：0收入，1支出")
    @ApiModelProperty("账目类型：0收入，1支出")
    private String ledgerType;

    /**
     * 是否对账，默认为0 ，未对帐，1已对账
     */
    @Excel(name = "是否对账，默认为0 ，未对帐，1已对账")
    @ApiModelProperty("是否对账，默认为0 ，未对帐，1已对账")
    private String status;

    /**
     * 所属区县
     */
    @Excel(name = "所属区县")
    @ApiModelProperty("所属区县")
    private Long areaId;

    /**
     * 开发商
     */
    @Excel(name = "开发商")
    @ApiModelProperty("开发商")
    private String companyName;

    /**
     * 业务类型 1退多 2补差
     */
    @NotBlank(message = "业务类型不能为空")
    @Excel(name = "业务类型 1退多 2补差")
    @ApiModelProperty("业务类型 1退多 2补差")
    private String bizType;

    /**
     * 退补原因
     */
    @NotBlank(message = "退补原因不能为空")
    @Excel(name = "退补原因")
    @ApiModelProperty("退补原因")
    private String reason;

    /**
     * 退补金额
     */
    @NotNull(message = "退补金额不能为空")
    @Excel(name = "退补金额")
    @ApiModelProperty("退补金额")
    private BigDecimal refundCompleteMoney;

    /**
     * 缴存对象
     */
    @Excel(name = "缴存对象")
    @ApiModelProperty("缴存对象")
    private String depositObject;

    /**
     * 到账时间
     */
    @Excel(name = "到账时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("到账时间")
    private Date accountTime;

    /**
     * 利息计算标准
     */
    @Excel(name = "利息计算标准")
    @ApiModelProperty("利息计算标准")
    private Integer interestCalculation;


    @Excel(name = "资金性质")
    @ApiModelProperty("资金性质")
    private String capitalProperty;

    @Excel(name = "缴存状态")
    @ApiModelProperty("缴存状态")
    private String depositStatus;

    /**
     * 应交金额
     */
    @ApiModelProperty("应交金额")
    private BigDecimal payableMoney;

    /**
     * 缴交标准（元/平方米）
     */
    @Excel(name = "缴交标准（元/平方米）")
    @ApiModelProperty("缴交标准（元/平方米）")
    private Long calculateTypeId;

    public String getDepositStatus() {
        return depositStatus;
    }

    public BigDecimal getPayableMoney() {
        return payableMoney;
    }

    public void setPayableMoney(BigDecimal payableMoney) {
        this.payableMoney = payableMoney;
    }

    public void setDepositStatus(String depositStatus) {
        this.depositStatus = depositStatus;
    }

    public String getCapitalProperty() {
        return capitalProperty;
    }

    public void setCapitalProperty(String capitalProperty) {
        this.capitalProperty = capitalProperty;
    }

    public String getBizType() {
        return bizType;
    }

    public void setBizType(String bizType) {
        this.bizType = bizType;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public BigDecimal getRefundCompleteMoney() {
        return refundCompleteMoney;
    }

    public void setRefundCompleteMoney(BigDecimal refundCompleteMoney) {
        this.refundCompleteMoney = refundCompleteMoney;
    }

    public String getDepositObject() {
        return depositObject;
    }

    public void setDepositObject(String depositObject) {
        this.depositObject = depositObject;
    }

    public Date getAccountTime() {
        return accountTime;
    }

    public void setAccountTime(Date accountTime) {
        this.accountTime = accountTime;
    }

    public Integer getInterestCalculation() {
        return interestCalculation;
    }

    public void setInterestCalculation(Integer interestCalculation) {
        this.interestCalculation = interestCalculation;
    }

    public Long getCalculateTypeId() {
        return calculateTypeId;
    }

    public void setCalculateTypeId(Long calculateTypeId) {
        this.calculateTypeId = calculateTypeId;
    }

    public void setBizMoneyId(Long bizMoneyId) {
        this.bizMoneyId = bizMoneyId;
    }

    public Long getBizMoneyId() {
        return bizMoneyId;
    }

    public void setBizId(Long bizId) {
        this.bizId = bizId;
    }

    public Long getBizId() {
        return bizId;
    }

    public void setDocid(Long docid) {
        this.docid = docid;
    }

    public Long getDocid() {
        return docid;
    }

    public void setTotalMoney(BigDecimal totalMoney) {
        this.totalMoney = totalMoney;
    }

    public BigDecimal getTotalMoney() {
        return totalMoney;
    }

    public void setFactMoney(BigDecimal factMoney) {
        this.factMoney = factMoney;
    }

    public BigDecimal getFactMoney() {
        return factMoney;
    }

    public void setTotalSize(BigDecimal totalSize) {
        this.totalSize = totalSize;
    }

    public BigDecimal getTotalSize() {
        return totalSize;
    }

    public void setFactSize(BigDecimal factSize) {
        this.factSize = factSize;
    }

    public BigDecimal getFactSize() {
        return factSize;
    }

    public void setTotalOwner(Long totalOwner) {
        this.totalOwner = totalOwner;
    }

    public Long getTotalOwner() {
        return totalOwner;
    }

    public void setInterestMoney(BigDecimal interestMoney) {
        this.interestMoney = interestMoney;
    }

    public BigDecimal getInterestMoney() {
        return interestMoney;
    }

    public void setDepositTime(Date depositTime) {
        this.depositTime = depositTime;
    }

    public Date getDepositTime() {
        return depositTime;
    }

    public void setLedgerType(String ledgerType) {
        this.ledgerType = ledgerType;
    }

    public String getLedgerType() {
        return ledgerType;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public void setAreaId(Long areaId) {
        this.areaId = areaId;
    }

    public Long getAreaId() {
        return areaId;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

	@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
				.append("bizMoneyId", getBizMoneyId())
				.append("bizId", getBizId())
				.append("docid", getDocid())
				.append("totalMoney", getTotalMoney())
				.append("factMoney", getFactMoney())
				.append("totalSize", getTotalSize())
				.append("factSize", getFactSize())
				.append("totalOwner", getTotalOwner())
				.append("interestMoney", getInterestMoney())
				.append("depositTime", getDepositTime())
				.append("ledgerType", getLedgerType())
				.append("status", getStatus())
				.append("areaId", getAreaId())
				.toString();
	}
}
